{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Natural Language Processing Micro Project\n",
    "\n",
    "In this NLP project we will attempt to classify Yelp Reviews into 1 star or 5 star categories based off the text content in the reviews. \n",
    "\n",
    "We will use the [Yelp Review Data Set from Kaggle](https://www.kaggle.com/c/yelp-recsys-2013)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "\n",
    "import seaborn as sns\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Data\n",
    "\n",
    "Each observation in this dataset is a review of a particular business by a particular user.\n",
    "\n",
    "The \"stars\" column is the number of stars (1 through 5) assigned by the reviewer to the business. (Higher stars is better.) In other words, it is the rating of the business by the person who wrote the review.\n",
    "\n",
    "The \"cool\" column is the number of \"cool\" votes this review received from other Yelp users. \n",
    "\n",
    "All reviews start with 0 \"cool\" votes, and there is no limit to how many \"cool\" votes a review can receive. In other words, it is a rating of the review itself, not a rating of the business.\n",
    "\n",
    "The \"useful\" and \"funny\" columns are similar to the \"cool\" column.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "yelp = pd.read_csv('data/yelp.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>business_id</th>\n",
       "      <th>date</th>\n",
       "      <th>review_id</th>\n",
       "      <th>stars</th>\n",
       "      <th>text</th>\n",
       "      <th>type</th>\n",
       "      <th>user_id</th>\n",
       "      <th>cool</th>\n",
       "      <th>useful</th>\n",
       "      <th>funny</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>9yKzy9PApeiPPOUJEtnvkg</td>\n",
       "      <td>2011-01-26</td>\n",
       "      <td>fWKvX83p0-ka4JS3dc6E5A</td>\n",
       "      <td>5</td>\n",
       "      <td>My wife took me here on my birthday for breakf...</td>\n",
       "      <td>review</td>\n",
       "      <td>rLtl8ZkDX5vH5nAx9C3q5Q</td>\n",
       "      <td>2</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>ZRJwVLyzEJq1VAihDhYiow</td>\n",
       "      <td>2011-07-27</td>\n",
       "      <td>IjZ33sJrzXqU-0X6U8NwyA</td>\n",
       "      <td>5</td>\n",
       "      <td>I have no idea why some people give bad review...</td>\n",
       "      <td>review</td>\n",
       "      <td>0a2KyEL0d3Yb1V6aivbIuQ</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>6oRAC4uyJCsJl1X0WZpVSA</td>\n",
       "      <td>2012-06-14</td>\n",
       "      <td>IESLBzqUCLdSzSqm0eCSxQ</td>\n",
       "      <td>4</td>\n",
       "      <td>love the gyro plate. Rice is so good and I als...</td>\n",
       "      <td>review</td>\n",
       "      <td>0hT2KtfLiobPvh6cDC8JQg</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "              business_id        date               review_id  stars  \\\n",
       "0  9yKzy9PApeiPPOUJEtnvkg  2011-01-26  fWKvX83p0-ka4JS3dc6E5A      5   \n",
       "1  ZRJwVLyzEJq1VAihDhYiow  2011-07-27  IjZ33sJrzXqU-0X6U8NwyA      5   \n",
       "2  6oRAC4uyJCsJl1X0WZpVSA  2012-06-14  IESLBzqUCLdSzSqm0eCSxQ      4   \n",
       "\n",
       "                                                text    type  \\\n",
       "0  My wife took me here on my birthday for breakf...  review   \n",
       "1  I have no idea why some people give bad review...  review   \n",
       "2  love the gyro plate. Rice is so good and I als...  review   \n",
       "\n",
       "                  user_id  cool  useful  funny  \n",
       "0  rLtl8ZkDX5vH5nAx9C3q5Q     2       5      0  \n",
       "1  0a2KyEL0d3Yb1V6aivbIuQ     0       0      0  \n",
       "2  0hT2KtfLiobPvh6cDC8JQg     0       1      0  "
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "yelp.head(3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 10000 entries, 0 to 9999\n",
      "Data columns (total 10 columns):\n",
      "business_id    10000 non-null object\n",
      "date           10000 non-null object\n",
      "review_id      10000 non-null object\n",
      "stars          10000 non-null int64\n",
      "text           10000 non-null object\n",
      "type           10000 non-null object\n",
      "user_id        10000 non-null object\n",
      "cool           10000 non-null int64\n",
      "useful         10000 non-null int64\n",
      "funny          10000 non-null int64\n",
      "dtypes: int64(4), object(6)\n",
      "memory usage: 781.3+ KB\n"
     ]
    }
   ],
   "source": [
    "yelp.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>stars</th>\n",
       "      <th>cool</th>\n",
       "      <th>useful</th>\n",
       "      <th>funny</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>10000.000000</td>\n",
       "      <td>10000.000000</td>\n",
       "      <td>10000.000000</td>\n",
       "      <td>10000.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>3.777500</td>\n",
       "      <td>0.876800</td>\n",
       "      <td>1.409300</td>\n",
       "      <td>0.701300</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>1.214636</td>\n",
       "      <td>2.067861</td>\n",
       "      <td>2.336647</td>\n",
       "      <td>1.907942</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>4.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>5.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>5.000000</td>\n",
       "      <td>77.000000</td>\n",
       "      <td>76.000000</td>\n",
       "      <td>57.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "              stars          cool        useful         funny\n",
       "count  10000.000000  10000.000000  10000.000000  10000.000000\n",
       "mean       3.777500      0.876800      1.409300      0.701300\n",
       "std        1.214636      2.067861      2.336647      1.907942\n",
       "min        1.000000      0.000000      0.000000      0.000000\n",
       "25%        3.000000      0.000000      0.000000      0.000000\n",
       "50%        4.000000      0.000000      1.000000      0.000000\n",
       "75%        5.000000      1.000000      2.000000      1.000000\n",
       "max        5.000000     77.000000     76.000000     57.000000"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "yelp.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "#Creating a new column to denote the length of the text\n",
    "yelp['text length'] = yelp['text'].apply(len)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## EDA"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "sns.set_style('whitegrid')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's create a grid of 5 histograms of text length based off of the star ratings."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<seaborn.axisgrid.FacetGrid at 0x129c9aa20>"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n2qXdu3frD3/4gzZu3KinnnpK11577XnXWbJkicfidskll/Q8LADDMVMNOnPmjFauXKmXX35Z9913\nn370ox9dxHcAQLCZpQ4dOXJER48e1fTp013bYmJiFBkZqZaWln/2bQAQJGapQc8995wsFovGjx8v\nSeru7pbT6dTNN9+sBQsWaP78+Rfz7QAQBGapQ5LcGuiSFB4ertGjR+vYsWMej4H50ESHz+3bt09/\n+tOftGrVKiUmJurHP/6xXnrpJa1YsUKff/75eW91+f3vf6/hw4fr6aefdm176623FBIS8rV3GpSU\nlCgzM1MzZszQjBkztGrVKt1888167bXXLlgshw0bxttsgH7AbDVo+fLleuONN/TII4/ou9/9rtfH\nAwg8M9Wh3bt3a926ddq1a5frrq6jR4/q73//u6666iqvzgUgMMxUg15//XW3r/fu3asVK1aovLxc\n//qv/+rVuQAEjpnq0LZt2/TII4/o7bffVnh4uCTpiy++UENDg+bMmePVudC30USHz11yySX6n//5\nH4WGhmrOnDmy2+16+eWXlZiY6CpWgwcP1qFDh9Te3q7Y2FhZrVa98847uvLKK/XXv/5Va9askSQ5\nHA6P12lsbNRLL72kBx98UAkJCdq7d6+sVqsmTJgQkJwAjMlMNei5557TK6+8op///OfKyspSW1ub\na2zIkCHn3YkBwBjMVIdmzZql8vJyLVu2TMuWLVN7e7vWrFmjjIwMXX/99T67DgDfMVMNio+Pd/va\narXK6XTqsssu8/iZxwCCz0x1aNq0aXrkkUe0YsUKLV68WDabTY8++qiio6P1ve99z2fXgfHRRIfP\nJScna8OGDSotLdWzzz6rgQMH6tprr9WTTz7p2ufOO+/U008/rUOHDuk3v/mNDh8+rBUrVqirq0uX\nX365li5dqpKSEu3fv19Tp0694HUKCwv10EMPacWKFWpvb1dcXJyWL1+uWbNm+S3bVw+TAGBcZqpB\nf/rTnxQSEqJ169Zp3bp1bmPFxcX80gYYlJnq0L/8y79oy5YtKi4u1ty5czVgwAB961vf0s9//nN+\nLwIMykw16EKoPYDxmakOjRo1Sps3b9bDDz+suXPnyul0aurUqVq7dq3CwsJ8dh0YX4izh0/mcDgc\nys3N1f3336+srCxJ0gcffKD//M//1JEjR5SYmKgVK1Zo8uTJrmN2796t4uJiNTY2KiMjQ0VFRW7/\n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\nnnvuORs7dqyDV9VYWVmZFRYWWmFhYaNYrlu3zrKysqy2tjbyvuPGjbOFCxeamdn8+fMbzVFTU2PZ\n2dmR299xxx22aNGiyP6SkhLLyMhodLyWtGfPHgsEAlZVVRXZtnLlShsyZIitX7/eU7NUVFTY1KlT\n7dSpU5Ft999/v82aNctzs5iZHTt2zPLy8uwnP/lJJJRe+/xqMG3aNHvmmWeabHfzPG7vEA1y3yx+\na5CZfzrkxQaZ0aEGdKj56JB7Z/Fih9zeIDN/dMhPDTLzX4f80iAzOhQLfmiQmb865LcGmfmnQ25u\nkKd/nEtpaanq6+uVmZkZ2ZaTk6Pt27c7eFWNbdy4Udddd51ee+01mVlk+/bt29WnTx8lJiZGtuXk\n5Gjr1q2R/QMGDIjsS0pK0tVXX61PPvlE4XBYO3bsUG5ubmR/Zmam6urqVFpaGpM5evTooRdffFHd\nunVrtP3rr7/Wtm3bPDfLM888o06dOkmSNm/erJKSEl1zzTWem0WS/vCHP6iwsFBXXnllZJvXPr8a\n7NmzR7169Wqy3c3zuL1DNMids/ipQZJ/OuTFBkl0qAEdurBZ6JA7Z/Fih9zeIMkfHfJTgxrm8VOH\n/NIgiQ7Fgh8aJPmrQ35rkOSfDrm5QZ5eRD9y5IhSUlIUHx8f2ZaamqpgMKijR486eGX/MWbMGD38\n8MON7mTpm2u/7LLLGm1LTU1VeXm5JKmioqLJ/u7du6u8vFwnTpxQMBhstL99+/ZKSUnRV199FZM5\nunTpouuvvz7ytpnp1Vdf1XXXXee5Wc40dOhQ3XnnncrMzFR+fr7nZlm/fr02b96siRMnNtrutTka\n/Otf/9JHH32k4cOH66abbtIf//hH1dXVuXoet3eIBrlvljN5vUGSvzrkxQZJdKgBHfp26JC7ZvFi\nh9zeIMkfHfJrgyTvd8hPDZLoUCz4oUGSfzvk9QZJ/uqQmxsUf/53ca+amhp16NCh0baGtxt+sYFb\nRbv2huuura2Nur+2tjbydrTbx9rcuXO1a9cuLVu2TEuXLvXsLAsXLlRlZaVmzpypp556ylP3SygU\n0syZMzVjxowm5/TSHA0OHTqk2tpaJSYmasGCBTpw4ICefPJJ1dbWunoer3bIzR/T5qBBTfc7MYuf\nOuTVBkl0KNrtY40ONd1Phy6OVzvk1QZJ3vscOZNfGiR5u0N+apBEh1qbmz+mzeGXDnm5QZK/OuT2\n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\nW9iUkgAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x129c9e160>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "g = sns.FacetGrid(yelp,col='stars')\n",
    "g.map(plt.hist,'text length')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Visualizing the counts for each rating type. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x1151ccf98>"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x11538d518>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.countplot(x='stars',data=yelp)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Grouping the reviews on the basis of the stars."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>cool</th>\n",
       "      <th>useful</th>\n",
       "      <th>funny</th>\n",
       "      <th>text length</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>stars</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.576769</td>\n",
       "      <td>1.604806</td>\n",
       "      <td>1.056075</td>\n",
       "      <td>826.515354</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.719525</td>\n",
       "      <td>1.563107</td>\n",
       "      <td>0.875944</td>\n",
       "      <td>842.256742</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.788501</td>\n",
       "      <td>1.306639</td>\n",
       "      <td>0.694730</td>\n",
       "      <td>758.498289</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.954623</td>\n",
       "      <td>1.395916</td>\n",
       "      <td>0.670448</td>\n",
       "      <td>712.923142</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>0.944261</td>\n",
       "      <td>1.381780</td>\n",
       "      <td>0.608631</td>\n",
       "      <td>624.999101</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           cool    useful     funny  text length\n",
       "stars                                           \n",
       "1      0.576769  1.604806  1.056075   826.515354\n",
       "2      0.719525  1.563107  0.875944   842.256742\n",
       "3      0.788501  1.306639  0.694730   758.498289\n",
       "4      0.954623  1.395916  0.670448   712.923142\n",
       "5      0.944261  1.381780  0.608631   624.999101"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stars =  yelp.groupby('stars').mean()\n",
    "stars"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's check out the correlation between different features for the reviews."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>cool</th>\n",
       "      <th>useful</th>\n",
       "      <th>funny</th>\n",
       "      <th>text length</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>cool</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.743329</td>\n",
       "      <td>-0.944939</td>\n",
       "      <td>-0.857664</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>useful</th>\n",
       "      <td>-0.743329</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.894506</td>\n",
       "      <td>0.699881</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>funny</th>\n",
       "      <td>-0.944939</td>\n",
       "      <td>0.894506</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.843461</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>text length</th>\n",
       "      <td>-0.857664</td>\n",
       "      <td>0.699881</td>\n",
       "      <td>0.843461</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                 cool    useful     funny  text length\n",
       "cool         1.000000 -0.743329 -0.944939    -0.857664\n",
       "useful      -0.743329  1.000000  0.894506     0.699881\n",
       "funny       -0.944939  0.894506  1.000000     0.843461\n",
       "text length -0.857664  0.699881  0.843461     1.000000"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stars.corr()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "And visualize this correlation:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x1155db860>"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\nRK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x11541c630>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.heatmap(stars.corr(),annot=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## NLP Classification\n",
    "\n",
    "Moving on to the actual task: we'll just grab the reviews that were either 1 star or 5 stars, to make life easier in this micro-project."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "yelp_class = yelp[(yelp['stars']==1) | (yelp['stars']==5) ]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "Int64Index: 4086 entries, 0 to 9999\n",
      "Data columns (total 11 columns):\n",
      "business_id    4086 non-null object\n",
      "date           4086 non-null object\n",
      "review_id      4086 non-null object\n",
      "stars          4086 non-null int64\n",
      "text           4086 non-null object\n",
      "type           4086 non-null object\n",
      "user_id        4086 non-null object\n",
      "cool           4086 non-null int64\n",
      "useful         4086 non-null int64\n",
      "funny          4086 non-null int64\n",
      "text length    4086 non-null int64\n",
      "dtypes: int64(5), object(6)\n",
      "memory usage: 383.1+ KB\n"
     ]
    }
   ],
   "source": [
    "yelp_class.info()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Our data will be the text content of the reviews, and we'll try to predict if it's a 1 star or a 5 star review. So let's assign those to our X and y variables."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "X = yelp_class['text']\n",
    "y = yelp_class['stars']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from sklearn.feature_extraction.text import CountVectorizer\n",
    "cv = CountVectorizer()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "X = cv.fit_transform(X)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Train Test Split"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from sklearn.model_selection import train_test_split\n",
    "\n",
    "X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.3,random_state=101)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from sklearn.naive_bayes import MultinomialNB\n",
    "\n",
    "nb = MultinomialNB()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "MultinomialNB(alpha=1.0, class_prior=None, fit_prior=True)"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "nb.fit(X_train,y_train)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Predictions and Evaluations"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "preds = nb.predict(X_test)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "** Create a confusion matrix and classification report using these predictions and y_test **"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from sklearn.metrics import confusion_matrix,classification_report"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[159  69]\n",
      " [ 22 976]]\n",
      "             precision    recall  f1-score   support\n",
      "\n",
      "          1       0.88      0.70      0.78       228\n",
      "          5       0.93      0.98      0.96       998\n",
      "\n",
      "avg / total       0.92      0.93      0.92      1226\n",
      "\n"
     ]
    }
   ],
   "source": [
    "print(confusion_matrix(y_test,preds))\n",
    "print(classification_report(y_test,preds))"
   ]
  }
 ],
 "metadata": {
  "anaconda-cloud": {},
  "kernelspec": {
   "display_name": "Python [default]",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
